CSS Flexboxã®ããŒã¹ã©ã€ã³æãã«é¢ããå æ¬çãªã¬ã€ããäžè²«æ§ãããèŠèŠçã«é åçãªã¬ã€ã¢ãŠããå®çŸããããã®ãè€æ°è¡ããã¹ãã®èª¿æŽã«çŠç¹ãåœãŠãŠããŸãã
CSS Flexboxã®ããŒã¹ã©ã€ã³æãïŒè€æ°è¡ããã¹ãã®èª¿æŽããã¹ã¿ãŒãã
CSS Flexboxã¯ãå¹ åºãé 眮ãªãã·ã§ã³ãæäŸãã匷åãªã¬ã€ã¢ãŠãããŒã«ã§ãã䞻軞ãšäº€å·®è»žã«æ²¿ã£ãŠã¢ã€ãã ãé 眮ããæ©èœã¯ããç¥ãããŠããŸãããèŠèœãšãããã¡ãªããŒã¹ã©ã€ã³æãæ©èœã¯ãç¹ã«è€æ°è¡ã®ããã¹ããæ±ãéã«ãèŠçŽ ã®åçŽæ¹åã®äœçœ®ã粟å¯ã«å¶åŸ¡ããŸãããã®ã¬ã€ãã§ã¯ãFlexboxã®ããŒã¹ã©ã€ã³æãã®è€éããæãäžããç¹ã«é·ãã®ç°ãªãããã¹ããå«ãã¢ã€ãã ã®ããŒã¹ã©ã€ã³ã調æŽããèŠèŠçã«èª¿åã®ãšãããããã§ãã·ã§ãã«ãªè¡šç€ºãä¿èšŒããããšã«çŠç¹ãåœãŠãŸãã
ããŒã¹ã©ã€ã³æãã®çè§£
ããŒã¹ã©ã€ã³æããšã¯ãããã¹ãã®ããŒã¹ã©ã€ã³ã«åºã¥ããŠèŠçŽ ãé 眮ããããšã§ããããŒã¹ã©ã€ã³ãšã¯ãã»ãšãã©ã®æåãã座ããæ³åäžã®ç·ã®ããšã§ããFlexboxã§ã¯ãããŒã¹ã©ã€ã³æããæŽ»çšããŠãåã¢ã€ãã å ã®ããã¹ãã®é·ãããã©ã³ããµã€ãºã«é¢ä¿ãªããç°ãªããã¬ãã¯ã¹ã¢ã€ãã å ã®ããã¹ãããããã«æãããã«ããããšãã§ããŸãã
Flexboxã§ããŒã¹ã©ã€ã³æããå¶åŸ¡ããäž»èŠãªããããã£ã¯ãalign-itemsïŒãã¬ãã¯ã¹ã³ã³ããã®äº€å·®è»žçšïŒãŸãã¯align-selfïŒåã
ã®ãã¬ãã¯ã¹ã¢ã€ãã çšïŒã§ãããããã®ããããã£ã®ãããããbaselineã«èšå®ããããšãã¢ã€ãã ã¯ããããã®ããŒã¹ã©ã€ã³ãæãããã«é
眮ãããŸãã
ãããŒã¹ã©ã€ã³ãã®æŠå¿µã¯åŸ®åŠã§ããããã¬ãã¯ã¹ã¢ã€ãã ã®ã³ã³ãã³ãã«äŸåããããšã«æ³šæããããšãéèŠã§ããã¢ã€ãã ã«ããã¹ããå«ãŸããŠããå ŽåãããŒã¹ã©ã€ã³ã¯éåžžãããã¹ãã®æåã®è¡ã®ããŒã¹ã©ã€ã³ã§ããã¢ã€ãã ã«ç»åã®ã¿ãå«ãŸããŠããå ŽåãããŒã¹ã©ã€ã³ã¯ç»åã®äžããŒãžã³ç«¯ã§ããFlexboxã®å®è£ ã¯ãããŒã¹ã©ã€ã³ãã©ã®ããã«æ±ºå®ãããã§è¥å¹²ç°ãªãå ŽåããããŸãããåºæ¬çãªååã¯äžè²«ããŠããŸãã
ããŒã¹ã©ã€ã³æãã䜿çšããå Žé¢
ããŒã¹ã©ã€ã³æãã¯ãç¹ã«æ¬¡ã®ãããªã·ããªãªã§åœ¹ç«ã¡ãŸãã
- é·ãã®ç°ãªãããã¹ããæã€èŠçŽ ã
- ç°ãªããã©ã³ããµã€ãºã®èŠçŽ ã
- ããã¹ããšç»åã®çµã¿åãããå«ãèŠçŽ ã
- èŠèŠçãªäžè²«æ§ãšæ£ç¢ºãªé 眮ãéèŠãªãã¶ã€ã³ã
äŸãã°ãåã¢ã€ãã ã«ã¿ã€ãã«ã説æãç»åãããååãªã¹ããèããŠã¿ãŸããããã¿ã€ãã«ã®é·ããç°ãªãå ŽåãããŒã¹ã©ã€ã³æãã䜿çšãããšããã¹ãŠã®èª¬æãåãåçŽäœçœ®ããå§ãŸãããã«ãªããããã¯ãªãŒã³ã§æŽçãããå€èгãäœæãããŸããããã¯ã補å説æã®é·ãã翻蚳ã«ãã£ãŠå€§å¹ ã«ç°ãªãå¯èœæ§ãããã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ãã¿ãŒã²ãããšããeã³ããŒã¹ãµã€ãã«ãšã£ãŠç¹ã«éèŠã§ãã
ããŒã¹ã©ã€ã³æãã®å®çšäŸ
Flexboxã®ããŒã¹ã©ã€ã³æãã®åã瀺ãããã«ãããã€ãã®å®çšçãªäŸãèŠãŠãããŸãããã
äŸ1ïŒã·ã³ãã«ãªããã¹ãã®é 眮
ããããç°ãªãéã®ããã¹ããå«ã3ã€ã®ãã¬ãã¯ã¹ã¢ã€ãã ãæã€ã·ã³ãã«ãªã¬ã€ã¢ãŠããèããŠã¿ãŸãããã
<div class="container">
<div class="item">Short Text</div>
<div class="item">A bit longer text</div>
<div class="item">This is a much longer line of text.</div>
</div>
.container {
display: flex;
align-items: baseline; /* Enable baseline alignment */
border: 1px solid #ccc;
padding: 10px;
}
.item {
padding: 10px;
border: 1px solid #eee;
}
ãã®äŸã§ã¯ãã³ã³ããã®align-items: baseline;ããããã£ã«ãããåã¢ã€ãã å
ã®ããã¹ãã®ããŒã¹ã©ã€ã³ãæããããŸãããã®ããããã£ããªããšãã¢ã€ãã ã¯ã³ã³ããã®äžéšã«æããããèŠèŠçã«é
åã®å£ãã¬ã€ã¢ãŠãã«ãªããŸãã
äŸ2ïŒããã¹ããšç»å
ããŒã¹ã©ã€ã³æãã¯ãããã¹ããšç»åãæããããã«ã䜿çšã§ããŸããç»åãšããã¹ããããã¯ãæã€ã¬ã€ã¢ãŠãããããšããŸãããã
<div class="container">
<img src="image.jpg" alt="Example Image">
<div class="text">This is some descriptive text that needs to be aligned with the image. It could be a caption or a longer description.</div>
</div>
.container {
display: flex;
align-items: baseline;
border: 1px solid #ccc;
padding: 10px;
}
.container img {
width: 100px;
height: 100px;
}
.container .text {
padding: 10px;
}
ãã®å Žåãããã¹ãã®ããŒã¹ã©ã€ã³ã¯ç»åã®äžããŒãžã³ç«¯ïŒãŸãã¯ãã©ãŠã¶ã®å®è£ ã«ãã£ãŠã¯æãè¿ãè¿äŒŒå€ïŒã«æããããŸããããã«ãããFlexboxã¬ã€ã¢ãŠãå ã§ç»åãšããã¹ããã¯ãªãŒã³ã§ãããã§ãã·ã§ãã«ãªæ¹æ³ã§çµ±åã§ããŸãã
äŸ3ïŒç°ãªããã©ã³ããµã€ãºã®è€æ°è¡ããã¹ã
æãé£ããã·ããªãªã®1ã€ã¯ãç°ãªããã©ã³ããµã€ãºã®è€æ°è¡ããã¹ããæããããšã§ããããŒã¹ã©ã€ã³æãããªããšãããã¹ããããã¯ããããŠãã©ãã©ã«èŠããããšããããŸããæ¬¡ã®äŸãèããŠã¿ãŸãããã
<div class="container">
<div class="item">
<h2>Title 1</h2>
<p>Short description.</p>
</div>
<div class="item">
<h2 style="font-size: 1.2em;">A Longer Title</h2>
<p>A slightly longer description here.</p>
</div>
</div>
.container {
display: flex;
align-items: baseline;
border: 1px solid #ccc;
padding: 10px;
}
.item {
padding: 10px;
border: 1px solid #eee;
}
ã¿ã€ãã«ã®ãã©ã³ããµã€ãºãšé·ããç°ãªã£ãŠããŠããalign-items: baseline;ã¯èª¬æãåãåçŽäœçœ®ããå§ãŸãããšãä¿èšŒããŸããããã«ãããã¯ããã«èŠèŠçã«é
åçã§äžè²«æ§ã®ããã¬ã€ã¢ãŠããäœæãããŸãã
é«åºŠãªãã¯ããã¯ãšèæ ®äºé
align-selfã䜿çšããåã
ã®ã¢ã€ãã ã®é
眮
align-itemsã¯ã³ã³ããå
ã®ãã¹ãŠã®ãã¬ãã¯ã¹ã¢ã€ãã ã®ããã©ã«ãã®é
眮ãèšå®ããŸãããåã
ã®ã¢ã€ãã ã«align-selfã䜿çšããããšã§ããã®ããã©ã«ããäžæžãã§ããŸããããã«ãããå¿
èŠã«å¿ããŠç¹å®ã®ã¢ã€ãã ã®é
眮ã埮調æŽã§ããŸãã
äŸãã°ãã»ãšãã©ã®ã¢ã€ãã ãããŒã¹ã©ã€ã³ã«æãããããç¹å®ã®1ã€ã®ã¢ã€ãã ã ããã³ã³ããã®äžéšã«æãããå ŽåããããŸããããã¯ããã®ç¹å®ã®ã¢ã€ãã ã«align-self: flex-start;ãèšå®ããããšã§å®çŸã§ããŸãã
<div class="container">
<div class="item">Item 1</div>
<div class="item" style="align-self: flex-start;">Item 2</div>
<div class="item">Item 3</div>
</div>
ã¯ãã¹ãã©ãŠã¶å¯Ÿå¿
Flexboxã¯ãã¢ãã³ãã©ãŠã¶ã§åªããã¯ãã¹ãã©ãŠã¶äºææ§ãæã£ãŠããŸãããã ããäžè²«ããã¬ã³ããªã³ã°ãä¿èšŒããããã«ãããŸããŸãªãã©ãŠã¶ãããŒãžã§ã³ã§ã¬ã€ã¢ãŠãããã¹ãããããšã¯åžžã«è¯ãç¿æ £ã§ããç¹ã«ãFlexboxã®æ©èœãå®å šã«ãµããŒãããããã«ãã³ããŒãã¬ãã£ãã¯ã¹ãããªãã£ã«ãå¿ èŠã«ãªãå¯èœæ§ãããå€ãããŒãžã§ã³ã®Internet Explorerã«ã¯ç¹ã«æ³šæããŠãã ããã
Autoprefixerã®ãããªããŒã«ã¯ãå¿ èŠãªãã³ããŒãã¬ãã£ãã¯ã¹ãCSSã«èªåçã«è¿œå ããããåºç¯ãªãã©ãŠã¶ããµããŒãããããããŸããããã«ãCan I Useã®ãããªãŠã§ããµã€ãã¯ãããŸããŸãªCSSæ©èœã®ãã©ãŠã¶ãµããŒãã«é¢ãã詳现æ å ±ãæäŸããŠããŸãã
ã¢ã¯ã»ã·ããªãã£ã«é¢ããèæ ®äºé
Flexboxã®ããŒã¹ã©ã€ã³æãã䜿çšããéã«ã¯ãã¢ã¯ã»ã·ããªãã£ãèæ ®ããããšãéèŠã§ããé害ã®ãããŠãŒã¶ãŒã«ãšã£ãŠãã³ã³ãã³ããèªã¿ããããçè§£ããããããšã確èªããŠãã ãããé©åãªã»ãã³ãã£ãã¯HTMLèŠçŽ ã䜿çšããååãªè²ã®ã³ã³ãã©ã¹ããæäŸããã¹ã¯ãªãŒã³ãªãŒããŒã®ãããªæ¯æŽæè¡ã§ã¬ã€ã¢ãŠãããã¹ãããŠãã ããã
æ å ±ãäŒããããã«èŠèŠçãªæãããã ãã«é Œããªãã§ãã ãããç»åã«ã¯ä»£æ¿ããã¹ããæäŸããARIA屿§ã䜿çšããŠã¬ã€ã¢ãŠãã®ã¢ã¯ã»ã·ããªãã£ãåäžãããŸãããã
ã¬ã¹ãã³ã·ããã¶ã€ã³ãšããŒã¹ã©ã€ã³æã
Flexboxã¯æ¬è³ªçã«ã¬ã¹ãã³ã·ãã§ãããããŸããŸãªç»é¢ãµã€ãºã«é©å¿ããã¬ã€ã¢ãŠããäœæããã®ã«æé©ãªéžæè¢ã§ããã¬ã¹ãã³ã·ããã¶ã€ã³ã§ããŒã¹ã©ã€ã³æãã䜿çšããå Žåãç°ãªããã¬ãŒã¯ãã€ã³ãã§ããã¹ããšç»åã®ãµã€ãºãã©ã®ããã«å€åããããèæ ®ããŠãã ããããã¹ãŠã®ããã€ã¹ã§ã¬ã€ã¢ãŠããèŠèŠçã«é åçã§ã¢ã¯ã»ã¹ããããç¶æ ãä¿ã€ããã«ãé 眮ããã©ã³ããµã€ãºã調æŽããå¿ èŠããããããããŸããã
ã¡ãã£ã¢ã¯ãšãªã䜿çšããŠãç»é¢ãµã€ãºã«åºã¥ããŠç°ãªãFlexboxããããã£ãé©çšããŸããäŸãã°ãå°ããªç»é¢ã§ã¯æ°Žå¹³ã¬ã€ã¢ãŠãããåçŽã¬ã€ã¢ãŠãã«åãæ¿ããããé©åãªããŒã¹ã©ã€ã³æããç¶æããããã«align-itemsããããã£ã調æŽãããããããšããããŸãã
äžè¬çãªåé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
ããã¹ããæåŸ éãã«æããªã
ããã¹ããæåŸ éãã«ããŒã¹ã©ã€ã³ã«æããªãå Žåã¯ã以äžã確èªããŠãã ããã
align-items: baseline;ããã¬ãã¯ã¹ã³ã³ããã«é©çšãããŠããããšã確èªããŸãã- ãã¬ãã¯ã¹ã¢ã€ãã ã«ããã¹ããå®çŸ©ãããããŒã¹ã©ã€ã³ãæã€ä»ã®ã³ã³ãã³ããå«ãŸããŠããããšã確èªããŸãã 空ã®èŠçŽ ã
display: none;ãæã€èŠçŽ ã«ã¯ããŒã¹ã©ã€ã³ããããŸããã - Flexboxã®é 眮ãäžæžãããŠããå¯èœæ§ã®ããç«¶åããCSSã«ãŒã«ã確èªããŸãã ãã©ãŠã¶ã®éçºè ããŒã«ã§èŠçŽ ã調æ»ããç«¶åããã¹ã¿ã€ã«ãç¹å®ããŸãã
- ããã¹ãã®ãã©ã³ãããããã£ãèæ ®ããŸãã ãã©ã³ããç°ãªãã°ããŒã¹ã©ã€ã³ãç°ãªããäžéšã®ãã©ã³ãã¯äºãã«å®å šã«æããªãå ŽåããããŸãã
ç»åãæ£ããæããªã
ç»åãããŒã¹ã©ã€ã³ã«æããã®ã«åé¡ãããå Žåã¯ãç»åã®ããŒã¹ã©ã€ã³ã¯éåžžãäžããŒãžã³ç«¯ã§ããããšã念é ã«çœ®ããŠãã ãããç»åã«å®çŸ©ãããé«ããããããã®äœçœ®ã«åœ±é¿ãäžããäºæããªãããŒãžã³ãããã£ã³ã°ããªãããšã確èªããŠãã ããã
ç»åã®vertical-alignããããã£ã䜿çšããŠããã®é
眮ã埮調æŽããããšãã§ããŸããäŸãã°ãvertical-align: bottom;ã¯ãç»åã®åºèŸºãããã¹ãã®ããŒã¹ã©ã€ã³ãšæãããã«ããã®ã«åœ¹ç«ã¡ãŸãã
äºæãã¬ã¬ã€ã¢ãŠãã·ãã
ããã¹ãã®è¿œå ãåé€ãªã©ãã³ã³ãã³ãã®å€æŽãããŒã¹ã©ã€ã³æãã䜿çšããŠãããšãã«äºæãã¬ã¬ã€ã¢ãŠãã·ãããåŒãèµ·ããããšããããŸããããã¯ããã¬ãã¯ã¹ã¢ã€ãã ã®ã³ã³ãã³ãã«ãã£ãŠããŒã¹ã©ã€ã³ã®äœçœ®ãå€ããå¯èœæ§ãããããã§ãã
ãã®åé¡ã軜æžããããã«ããã¬ãã¯ã¹ã¢ã€ãã ã«åºå®ã®é«ããèšå®ããããèŠçŽ ã®äœçœ®ã粟å¯ã«å¶åŸ¡ããå¿ èŠãããããè€éãªã¬ã€ã¢ãŠãã«ã¯Flexboxã®ä»£ããã«CSS Gridã䜿çšããããšãæ€èšããŠãã ããã
ããŒã¹ã©ã€ã³æãã®ä»£æ¿ææ®µ
ããŒã¹ã©ã€ã³æãã¯åŒ·åãªããŒã«ã§ããããã¹ãŠã®ã¬ã€ã¢ãŠãã«ãšã£ãŠåžžã«æé©ãªè§£æ±ºçãšã¯éããŸãããç¹å®ã®ããŒãºã«å¿ããŠã次ã®ãããªä»£æ¿ã®é 眮ãã¯ããã¯ãæ€èšããããšããããŸãã
align-items: center;: ã³ã³ããå ã§ã¢ã€ãã ãåçŽæ¹åã«äžå€®æãã«ããŸããalign-items: flex-start;: ã¢ã€ãã ãã³ã³ããã®äžéšã«æããŸããalign-items: flex-end;: ã¢ã€ãã ãã³ã³ããã®äžéšã«æããŸãã- CSS Grid: ç¹ã«2次å ã¬ã€ã¢ãŠãã«å¯ŸããŠãFlexboxãããå ç¢ã§æè»ãªã¬ã€ã¢ãŠãã·ã¹ãã ãæäŸããŸãã
çµè«
CSS Flexboxã®ããŒã¹ã©ã€ã³æãã¯ãç¹ã«è€æ°è¡ã®ããã¹ããç»åãããŸããŸãªãã©ã³ããµã€ãºãæ±ãéã«ãèŠèŠçã«äžè²«æ§ã®ãããããã§ãã·ã§ãã«ãªã¬ã€ã¢ãŠããäœæããããã®è²Žéãªãã¯ããã¯ã§ããããŒã¹ã©ã€ã³æãã®ååãçè§£ãããã®ã¬ã€ãã§æŠèª¬ããããã¯ããã¯ãé©çšããããšã§ãFlexboxã³ã³ããå ã®ããã¹ããä»ã®èŠçŽ ã調æŽããæè¡ãç¿åŸããããé åçã§ãŠãŒã¶ãŒãã¬ã³ããªãŒãªãŠã§ããã¶ã€ã³ãå®çŸã§ããŸãã
ããŒã¹ã©ã€ã³æããå®è£ ããéã«ã¯ãã¯ãã¹ãã©ãŠã¶ã®äºææ§ãã¢ã¯ã»ã·ããªãã£ãã¬ã¹ãã³ã·ããã¶ã€ã³ã®ååãèæ ®ããããšãå¿ããªãã§ãã ãããããŸããŸãªãã©ãŠã¶ãããã€ã¹ã§ã¬ã€ã¢ãŠãã培åºçã«ãã¹ãããå Žæãããã€ã¹ã«é¢ä¿ãªãããã¹ãŠã®ãŠãŒã¶ãŒã«äžè²«ããæ¥œãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãä¿èšŒããŠãã ããã
Flexboxã®ããŒã¹ã©ã€ã³æãããã¹ã¿ãŒããããšã§ãçŸä»£ã®ãŠã§ããã¶ã€ã³ã®èŠæ±ã«å¿ããæŽç·ŽãããèŠèŠçã«é åçãªãŠã§ãã¬ã€ã¢ãŠããäœæããããã®ååãªæºåãæŽããŸãã